package com.xnew.configuration;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

/**
 * @Author yangcd
 * @Date 2020/10/14
 */
@Configuration
@EnableScheduling
public class ScheduledConfiguration {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * @RedisLock 作为分布式锁实现，多节点执行定时任务时请要注意增加此注解
     * lockName 锁的名字，相同名字的在同一时间只能执行一次。默认为方法名
     * lockMills 锁定时间，默认60秒
     * lockExpireMills  锁超时的时间，默认120秒
     * autoRelease 执行成功后是否自动释放,默认false
     * 如果是定时任务，可以全部使用默认值
     *
     * @Scheduled(fixedDelay = 1000 * 60 * 60 * 4)
     * @Scheduled(cron = "0 0 6,12,18 * * ?")
     */
    @Scheduled(cron = "0 0 6,12,18 * * ?")
    public void demoScheduledCron(){
        logger.info("ScheduledConfiguration demoScheduledCron start...");

        /**
         * 业务操作
         */

        logger.info("ScheduledConfiguration demoScheduledCron end...");
    }

    /**
     * 六小时执行一次
     */
    @Scheduled(fixedDelay = 1000 * 60 * 60 * 6)
    public void demoScheduledFixedDelay(){
        logger.info("ScheduledConfiguration demoScheduledFixedDelay start...");

        /**
         * 业务操作
         */

        logger.info("ScheduledConfiguration demoScheduledFixedDelay end...");
    }
}
